#ifndef _sbrush_instrument_synthesizer_h_
#define _sbrush_instrument_synthesizer_h_

#include "sbrush_instrument.h"
#include "sbrush_audio_manager.h"

namespace sbrush {
	class InstrumentSynthesizer : public InstrumentListener,
								  public AudioSource
	{
	public:
		InstrumentSynthesizer();
		virtual ~InstrumentSynthesizer() throw();
		void start();
		void stop();
		
		virtual void addAudio(float** buffer, 
							  size_t numFrames, 
							  size_t numChannels) = 0;
		virtual void instrumentCallback(const Instrument* instrument,
										const InstrumentState& state) = 0;
		
	};
}

#endif